Verstappen won from Lando Norris and George Russell in a busy race that saw conditions move from wet to dry.
The Safety Car played a huge role in the outcome of the race, arguably going against Norris and McLaren.
Oscar Piastri was fifth at the flag while Daniel Ricciardo recovered from a false start penalty to score points in eighth.
Russell maintained the lead into Turn 1 from Verstappen with Norris and Piastri in tow.
Fernando Alonso got by Daniel Ricciardo, the Australian dropping behind Lewis Hamilton in the opening three corners too.
Grip was at a premium, Kevin Magnussen making the most of his full wet tyres to rise to eighth on the opening lap.
He and team-mate Nico Hulkenberg were the only two who opted for the full wet tyres and enjoyed far more grip than their rivals as a consequence.
At the end of Lap 2, Russell led from Verstappen, Norris, Piastri, Magnussen, Alonso, Hamilton, Ricciardo, Lance Stroll, and Hulkenberg.
Piastri fell victim to Magnussen on Lap 3, the Dane getting better drive out of the hairpin to cruise into fourth.
At Ferrari, Charles Leclerc was advised to keep pushing despite a problem developing with his power unit.
On Lap 6, conditions had cleared improved and the needle began to swing away from the full wet runners as a dry line began to appear.
At the end of Lap 7, Haas pulled the trigger and boxed Magnussen from fourth, the team not ready for him in what was an 8.6s stop.
Running eighth, Ricciardo caught the eye of officials who noted the RB driver for a false start, slapping him with a five-second penalty.
Russell continued to lead after 10 laps, holding a small advantage over Verstappen, while the two McLarens had dropped back – Norris seven seconds further back and Piastri about the same away from his team-mate in fourth.
Still on full wets, Hulkenberg was falling back through the field as track conditions improved before he finally pitted at the end of Lap 12.
As a dry line began to appear, Russell came under pressure from Verstappen while Norris was reeling in the leading pair.
The championship leader made a mistake into Turn 2 on Lap 17, pinching a brake in Turn 1 which left him wide for the right-hander that followed and saw him drop two seconds.
A lap later, officials announced DRS was enabled, coming at a time when Verstappen was under the attention of Norris, the McLaren driver nabbing second into the final chicane as they completed Lap 20.
A better run through the hairpin and the benefit of DRS made the move trivial, as Norris quickly latched onto Mercedes in the race lead.
He was clearly more confident on the brakes, repeating his pass on Verstappen to claim the lead on the very next lap.
Russell took to the run-off at the final chicane, rejoining slowly and found himself passed by Verstappen as the pole man slipped from the race lead to third in quick time.
An off for Logan Sargeant on Lap 25 drew the Safety Car as he found himself pointing the wrong way at the exit of Turn 4 with a damaged rear wing.
It posed a problem for teams as the track was dry, but the weather was closing in – the bright sunshine that had broken through had disappeared once more.
Norris opted not to pit while the three behind him headed into the lane for a fresh set of intermediates.
McLaren pulled the leader in next time around, dropping him to third.
RB called Ricciardo in too, feeding him back out in 10th having served his false start penalty in the process.
Leclerc pitted at the end of Lap 28, a set of hard compound tyres fitted as he performed a reset of the ailing Ferrari.
The Safety Car was withdrawn at the end of Lap 29, Verstappen heading the pack from Russell, Norris, Piastri, Hamilton, Alonso, Yuki Tsunoda, Stroll, Esteban Ocon, and Ricciardo in the top 10.
Rain was then reported as Leclerc skated off the road at Turn 2, his team advising it would last two minutes before clearing once more.
The Monegasque was hopelessly off the pace – his engine issue resolved but demonstrably on the wrong tyres as he lapped more than 15 seconds off the pace. He was soon back in the pits for a set of intermediate tyres.
Predictably, he was also quickly lapped by the pack, headed by Verstappen, who had Russell, Norris, Piastri, and Hamilton for company.
On Lap 41, Alpine swapped Pierre Gasly onto slick tyres – a set of hard compound rubber bolted on.
Magnussen followed soon after as he swapped onto medium rubber, so too did Bottas, the duo well down the order.
Mercedes had seen enough and called Hamilton in from fifth at the end of Lap 43, taking on a set of medium compound tyres.
Red Bull Racing responded with Sergio Perez, who had made little impact during the race and offered a degree of free insight for race leader Verstappen.
The pit lane became a hive of activity, Piastri diving in at the end of Lap 44 as Gasly, on the hard tyres, began to go fastest.
The leaders had no choice; Verstappen and Russell hauled though Norris remained on track for another two laps as he pushed on with the intermediate rubber in the hope of performing an overcut.
He was finally in the lane on Lap 47 for a set of medium tyres, emerging in the lead but, without any grip on the wet pit exit, quickly ceded it to Verstappen.
At the end of the lap, Verstappen headed the field by more than four seconds to Norris, then came Russell, Piastri, Hamilton, Alonso, Tsunoda, Stroll, Ocon, and Alex Albon in the top 10.
Norris struggled for grip and as he exited the hairpin on Lap 49 fell victim to Russell. The pair swapped positions again when a mistake from Russell at Turn 9 saw him hit the kerb and open the door.
Perez’s race came to an end when he had a moment at Turn 6, damaging the rear wing of the Red Bull which he limped back to the pits – leaving debris on the circuit.
Sainz and Albon also had a moment at the same section of track, Albon in the wall as the Safety Car was called for once again.
Sainz had spun, the Williams driver with nowhere to go as he was clouted by the spinning Ferrari – the Spaniard limping back to the pits and retirement.
Mercedes boxed both its drivers under the Safety Car, which left the order Verstappen from Norris and Piastri, with Russell fourth from Hamilton.
Verstappen leapt clear of the pack at the Lap 59 restart, pulling a 1.5s lead early over the two McLarens and fresh-booted Mercedes.
Russell attacked Piastri into the final chicane on Lap 62 but could find no way through.
Two laps later the Brit attacked the McLaren driver again, Piastri unmoved as the pair made contact and Russell was forced into the run-off area and into fifth as Hamilton passed him.
Piastri remained third though had dropped well out of DRS range of his team-mate ahead. Hamilton used that to his advantage and made short work of him, using DRS to breeze by into the final chicane on Lap 65.
Hamilton was on the hard tyres, versus mediums of those around him while Piastri slipped back into the clutches of Russell, who got the job done as his team-mate had a lap earlier.
A spin from Tsunoda saw him drop out of the points and narrowly avoid taking Magnussen out of the race in the process.
That left the order Verstappen from Norris, Hamilton, Russell, Piastri, Alonso, Stroll, Ricciardo, Ocon, and Gasly in the top 10 with three laps remaining.
Hamilton and Russell soon began squabbling, the latter squeezing underneath into the final chicane to steal away the final podium place.
That was the way it finished, Verstappen from Norris and Russell who held on from Hamilton, picked up the bonus point for fastest lap on the final lap.
Piastri drifted back in the final laps in fifth ahead of the two Aston Martins and Ricciardo a seasons-best in eighth.
Verstappen now holds a 54 point advantage in the drivers’ championship over Charles Leclerc, who scored no points in Canada, while Red Bull Racing has a 51 point lead over Ferrari in the constructors’ battle.
Oscar Piastri sits sixth in the drivers’ standings with 81 points, with Ricciardo now 12th on nine.